1705B - Mark the Dust Sweeper - CodeForces Solution


constructive algorithms greedy implementation *900

Please click on ads to support us..

Python Code:

t = int(input())
ans = []
for i in range(t):
    n = int(input())
    a = list(map(int,input().split(" ")))
    count = 0
    for i in range(n-1):
        if a[i+1]  == 0 and a[i] != 0:
            a[i] -= 1
            a[i+1] += 1
            count += 1
    for i in range(n-1):
        count += a[i]
    ans.append(count)    


for i in ans:
    print(i)        

C++ Code:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstdio>
using namespace std;
#define PII pair<int,int>
#define LL long long 
#define PLL pair<LL,LL>
#define N 200010
const LL INF = 1e18;
LL t;
LL a[N],n;
void solve()
{
    cin>>n;
	LL ans=0;
	for(int i=1;i<=n;i++)cin>>a[i],ans+=a[i];
	ans-=a[n];
	LL pre=0;
	LL i=1;
	while(a[i]==0  &&i<=n)i++;
	LL cnt=0;vector<LL>wz(n+3);
	for(int j=n-1;j>=i;j--)
	{
		if(a[j]==0)cnt++;
	}
	cout<<ans+cnt<<endl;
}
int main()
{
    cin>>t;
    while(t--)solve();
	return 0;
}


Comments

Submit
0 Comments
More Questions

429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST
445. Add Two Numbers II
442. Find All Duplicates in an Array
437. Path Sum III
436. Find Right Interval
435. Non-overlapping Intervals
406. Queue Reconstruction by Height
380. Insert Delete GetRandom O(1)
332. Reconstruct Itinerary
368. Largest Divisible Subset
377. Combination Sum IV
322. Coin Change
307. Range Sum Query - Mutable
287. Find the Duplicate Number
279. Perfect Squares
275. H-Index II
274. H-Index
260. Single Number III
240. Search a 2D Matrix II
238. Product of Array Except Self
229. Majority Element II
222. Count Complete Tree Nodes
215. Kth Largest Element in an Array